//
//  NSString+JZNExtension.m
//  Exam
//
//  Created by AlexLee on 6/7/14.
//  Copyright (c) 2014 Changzhou Jinzhineng Software Co., Ltd. All rights reserved.
//

#import "NSString+JZNExtension.h"
#import "NSObject+JZNTypeConversion.h"
#include <objc/runtime.h>
#import <CommonCrypto/CommonDigest.h>

@implementation NSString(JZNExtension)

+ (BOOL)stringIsEmpty:(NSString*)aString
{
    if ([aString isKindOfClass:[NSNumber class]]) {
        return YES;
    }

    if ((NSNull *)aString == [NSNull null]) {
        return YES;
    }

    if (aString == nil) {
        return YES;
    } else if ([aString isNotKindOfClass:[NSString class]]) {
        return YES;
    } else if ([aString length] == 0) {
        return YES;
    } else {
        aString = [aString stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];

        if ([aString length] == 0) {
            return YES;
        }
    }

    return NO;
}

+ (BOOL)stringIsNoEmpty:(NSString*)aString;
{
    return ![self stringIsEmpty:aString];
}

- (NSString *)MD5
{
    if ([NSString stringIsEmpty:self]) {
        return @"";
    }
    const char *cStr = [self UTF8String];
    unsigned char result[CC_MD5_DIGEST_LENGTH];
    CC_MD5(cStr, strlen(cStr), result);
    
    return [NSString stringWithFormat:@"%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X",
            result[0], result[1], result[2], result[3],
            result[4], result[5], result[6], result[7],
            result[8], result[9], result[10], result[11],
            result[12], result[13], result[14], result[15]
            ];
}

@end
